package string;

/**
 * String不适合频繁修改，为解决这个问题java提供了专门修改字符串内容的API：StringBuilder
 * 其内部维护一个可变的char数组，并且提供了相关的常见工作：增，删，改，插
 */
public class StringBuilderDemo {
    public static void main(String[] args) {
        String str="好好学习java";
        /*StringBuffer是JDK1.0时与String一起推出的类
        StringBuilder是JDK1.5之后推出的一个类
        它们功能一致，区别为：StringBuffer是并发安全的，StringBuilder不是并发安全的
        大多数开发时我们几乎不会在多线程下操作同一个String，因此推荐使用StringBuilder来提高性能
         */
        StringBuffer builder=new StringBuffer(str);
        //StringBuilder builder=new StringBuilder(str);//内部表示一个空的字符串：“ ”
        //将给定字符串内容复制一份到StringBuilder内部进行修改
        /*
        append()：追加操作
         */
        builder.append(",为了找个好工作");//好好学习java,为了找个好工作,str+builder
        System.out.println(builder);
        /*
        replace():替换修改操作
         */
        builder.replace(9,16,"就是为了改变世界");//好好学习java,就是为了改变世界,替换源字符串起始下标9到16的字符串
        System.out.println(builder);
        /*
        delete（）：删除操作
         */
        builder.delete(0,9);//就是为了改变世界,删除源字符串起始下标0到9的字符串
        System.out.println(builder);
        /*
        insert（）：插入操作
         */
        builder.insert(0,"活着，");//活着,就是为了改变世界,在源字符串起始下标0插入字符串
        System.out.println(builder);
        /*StringBuilber提供了String的很多相关操作但是StringBuilber不是String，他们不是同一类型，也没有继承关系

         */
        builder.length();
        builder.indexOf("");
        //获取StringBuilber内部表示的字符串内容时，可以调用toString方法
        String line=builder.toString();
        System.out.println();

    }

}
